/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package accesodatos;

import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author User
 */
public class DaoHechos {
    
    private FachadaBD fachadabd; //Conectarse a BD trans.
    private FachadaDW fachadadw; //Conectarse a DW
    Connection conn;
    Connection conn2;       
    public DaoHechos(){
          fachadadw = new FachadaDW();
          fachadabd = new FachadaBD();
          conn=fachadadw.conectar();
          conn2=fachadabd.conectar();
          
    }
    
    public int getGrupoFamiliar(int idUsuario){
    
        int idGrupo=0; 
        String sql_select;
        sql_select="SELECT idgrupo_familiar FROM grupo_familiar WHERE id_afiliado= '"+idUsuario+"'";
                 try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idGrupo=tabla.getInt("idgrupo_familiar");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idGrupo;
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    
    }
    
    public int getIdAfiliado(String naturalKey){
        int idAfiliado=0; 
        String sql_select;
        sql_select="SELECT id_afiliado FROM dimension_afiliado WHERE identificacion= '"+naturalKey+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idAfiliado=tabla.getInt("id_afiliado");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idAfiliado;
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
    
    public int getIdDiagnostico(String descripcion){
        int idDiagnostico=0; 
        String sql_select;
        sql_select="SELECT id_diagnostico FROM dimension_diagnostico WHERE descripcion= '"+descripcion+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idDiagnostico=tabla.getInt("id_diagnostico");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idDiagnostico;
            
             
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
    
    public int getIdIPS(String keyIps){
        int idIps=0; 
        String sql_select;
        sql_select="SELECT id_ips FROM dimension_ips WHERE key_ips= '"+keyIps+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idIps=tabla.getInt("id_ips");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idIps;
            
             
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
    
    public String getNaturalKeyIPSMedico(String identificacion){
        String naturalKey=""; 
        String sql_select;
        sql_select="SELECT ID_IPS FROM medico WHERE cedula= '"+identificacion+"'";
         try{
            //Connection conn= fachadabd.conectar();
            Statement sentencia = conn2.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                naturalKey=tabla.getString("id_ips");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return naturalKey;
            
             
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return null;
    }
   
    public int getIdFecha(Date fecha){
        int idFecha=0;  
        String sql_select;
        sql_select="SELECT k_fecha FROM fecha f WHERE f.fecha= '"+fecha+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idFecha=tabla.getInt("k_fecha");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idFecha;                    
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
        
    public int getIdMedico(String identificacion){
        int idMedico=0;  
        String sql_select;
        sql_select="SELECT id_medico FROM dimension_medico WHERE identificacion= '"+identificacion+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idMedico=tabla.getInt("id_medico");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idMedico;                    
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
    
    public int getIdMedicamento(String codigoMedicamento){
        
        int idMedicamento=0;   
        String sql_select;
        sql_select="SELECT id_medicamento FROM dimension_medicamento WHERE codigo= '"+codigoMedicamento+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idMedicamento=tabla.getInt("id_medicamento");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idMedicamento;                    
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
    
    public int getPrecioMedicamento(String codigoMedicamento){
        
        int precioMedicamento=0;
        String sql_select= "SELECT Precio FROM Medicamento WHERE codigo='"+codigoMedicamento+"'";
                 try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn2.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                precioMedicamento=tabla.getInt("Precio");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return precioMedicamento;                    
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
    
    public int getIdServicioPOS (String codigo_servicio){
        int idServicio=0;  
        String sql_select;
        sql_select="SELECT id_servicio FROM dimension_serviciopos WHERE codigo_servicio= '"+codigo_servicio+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idServicio=tabla.getInt("id_servicio");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idServicio;                    
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
    
    public ArrayList<String> getCitasGenerales(){
                  
          ArrayList<String>  citas_generales = new ArrayList<String>();
          String sql_select;
          sql_select="SELECT *  FROM citas_generales;"; 
             try{
                //Connection conn= fachadabd.conectar();
                Statement sentencia = conn2.createStatement();
                ResultSet tabla = sentencia.executeQuery(sql_select);

                String resultado="";
                while(tabla.next()){
                    resultado="";
                    int idMedico = getIdMedico(tabla.getString("ID_medico"));
                    int idAfiliado = getIdAfiliado(tabla.getString("ID_usuario"));
                    int idDiagnostico = getIdDiagnostico(tabla.getString("Diagnostico"));
                    String idMedicoIPS = getNaturalKeyIPSMedico(tabla.getString("ID_medico"));
                    int idIps= getIdIPS(idMedicoIPS);
                    int costo = getCostoServicio("1234");
                    int idDemografia= conseguirDemografia(tabla.getString("ID_usuario"));
                    Date fechaSolicitud=tabla.getDate("Fecha_Solicitud");
                    Date fechaAtencion =tabla.getDate("Fecha_Atencion");
                    int idFechaSolicitud = getIdFecha(fechaSolicitud);
                    int idFechaAtencion = getIdFecha(fechaAtencion);
                    int tiempoEspera = calcularTiempoEspera(fechaSolicitud, fechaAtencion);
                   // System.out.println("Tiempo Espera:" + tiempoEspera);
 
                    resultado+= "'"+idMedico+"', '"+idAfiliado+"', '"+idDemografia+"' ,'"+idDiagnostico+"', '"+idIps+"', '"+idFechaSolicitud+"', '"+idFechaAtencion+"'," +
                            "'"+tiempoEspera+"', '"+costo+"'";    
                   // System.out.println(resultado);
                     citas_generales.add(resultado);
                }
                //conn.close();
                return  citas_generales;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return null;
    }
    
    public ArrayList<String> getCitasEspecializadas(){
          ArrayList<String>  citas_generales = new ArrayList<String>();
          String sql_select;
          sql_select="SELECT *  FROM remisiones;"; 
             try{
                //Connection conn= fachadabd.conectar();
                Statement sentencia = conn2.createStatement();
                ResultSet tabla = sentencia.executeQuery(sql_select);

                String resultado="";
                while(tabla.next()){
                    resultado="";
                    int idMedicoEspecialista = getIdMedico(tabla.getString("ID_medico"));
                    int idMedicoRemitente= getIdMedico(tabla.getString("ID_Medico_Remite"));
                    int idAfiliado = getIdAfiliado(tabla.getString("ID_usuario"));
                    int idDiagnostico = getIdDiagnostico(tabla.getString("Diagnostico"));
                    String idMedicoIPS = getNaturalKeyIPSMedico(tabla.getString("ID_medico"));
                    int idIps= getIdIPS(idMedicoIPS);
                    int costo = getCostoServicio(tabla.getString("Servicio_POS"));
                    int idPOS = getIdServicioPOS(tabla.getString("Servicio_POS"));
                    int idDemografia= conseguirDemografia(tabla.getString("ID_usuario"));
                    Date fechaRemision=tabla.getDate("Fecha_Remision");
                    Date fechaAtencion =tabla.getDate("Fecha_Atencion");
                    int idFechaRemision = getIdFecha(fechaRemision);
                    int idFechaAtencion = getIdFecha(fechaAtencion);
                    int tiempoEspera = calcularTiempoEspera(fechaRemision, fechaAtencion);
                   // System.out.println("Tiempo Espera:" + tiempoEspera);
 
                    resultado+= "'"+idMedicoRemitente+"','"+idMedicoEspecialista+"' ,'"+idAfiliado+"','"+idDiagnostico+"', '"+idPOS+"', '"+idDemografia+"' , '"+idIps+"', '"+idFechaRemision+"', '"+idFechaAtencion+"'," +
                            "'"+costo+"', '"+tiempoEspera+"'";    
                    //System.out.println(resultado);
                     citas_generales.add(resultado);
                }
                //conn.close();
                return  citas_generales;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return null;
    }
    
    public ArrayList<String> getUrgencias(){
        
          ArrayList<String>  urgencias = new ArrayList<String>();
          String sql_select;
          sql_select="SELECT *  FROM urgencias;"; 
             try{
                //Connection conn= fachadabd.conectar();
                Statement sentencia = conn2.createStatement();
                ResultSet tabla = sentencia.executeQuery(sql_select);

                String resultado="";
                while(tabla.next()){
                    resultado="";
                    int idMedico = getIdMedico(tabla.getString("ID_medico"));
                    int idAfiliado = getIdAfiliado(tabla.getString("ID_usuario"));
                    int idDiagnostico = getIdDiagnostico(tabla.getString("Diagnostico"));
                    String idMedicoIPS = getNaturalKeyIPSMedico(tabla.getString("ID_medico"));
                    int idIps= getIdIPS(idMedicoIPS);
                    int costo = getCostoServicio("1367");
                    int idDemografia= conseguirDemografia(tabla.getString("ID_usuario"));
                    Date fechaSolicitud=tabla.getDate("Fecha_Solicitud");
                    Date fechaAtencion =tabla.getDate("Fecha_Atencion");
                    int idFechaSolicitud = getIdFecha(fechaSolicitud);
                    int idFechaAtencion = getIdFecha(fechaAtencion);
                    int tiempoEspera = calcularTiempoEspera(fechaSolicitud, fechaAtencion);
                   // System.out.println("Tiempo Espera:" + tiempoEspera);
 
                    resultado+= "'"+idMedico+"', '"+idAfiliado+"', '"+idDemografia+"' ,'"+idDiagnostico+"', '"+idIps+"', '"+idFechaSolicitud+"', '"+idFechaAtencion+"'," +
                            "'"+tiempoEspera+"', '"+costo+"'";    
                   // System.out.println(resultado);
                     urgencias.add(resultado);
                }
                //conn.close();
                return  urgencias;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return null;
    }
    
    public ArrayList<String> getHospitalizaciones(){
          ArrayList<String>  hospitalizaciones = new ArrayList<String>();
          String sql_select;
          sql_select="SELECT *  FROM hospitalizaciones;"; 
             try{
                //Connection conn= fachadabd.conectar();
                Statement sentencia = conn2.createStatement();
                ResultSet tabla = sentencia.executeQuery(sql_select);

                String resultado="";
                while(tabla.next()){
                    resultado="";
                    int idMedico = getIdMedico(tabla.getString("ID_medico"));
                    int idAfiliado = getIdAfiliado(tabla.getString("ID_usuario"));
                    int idDiagnostico = getIdDiagnostico(tabla.getString("Diagnostico"));
                    String idMedicoIPS = getNaturalKeyIPSMedico(tabla.getString("ID_medico"));
                    int idIps= getIdIPS(idMedicoIPS);
                   
                    int idDemografia= conseguirDemografia(tabla.getString("ID_usuario"));
                    Date fechaSolicitud=tabla.getDate("Fecha_Solicitud");
                    Date fechaAtencion =tabla.getDate("Fecha_Atencion");
                    int idFechaSolicitud = getIdFecha(fechaSolicitud);
                    int idFechaAtencion = getIdFecha(fechaAtencion);
                    int tiempoEspera = calcularTiempoEspera(fechaSolicitud, fechaAtencion);
                    int duracion= tabla.getInt("Duracion_Hospitalizacion");
                     int costo = getCostoServicio("1346")*duracion;
                   // System.out.println("Tiempo Espera:" + tiempoEspera);
 
                    resultado+= "'"+idMedico+"', '"+idAfiliado+"', '"+idDemografia+"' ,'"+idDiagnostico+"', '"+idIps+"', '"+idFechaSolicitud+"', '"+idFechaAtencion+"'," +
                            "'"+costo+"', '"+tiempoEspera+"', '"+duracion+"'";    
                    //System.out.println(resultado);
                     hospitalizaciones.add(resultado);
                }
                //conn.close();
                return  hospitalizaciones;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return null;
    }
    
    public ArrayList<String> getRetiros(){
        
          ArrayList<String>  retiros = new ArrayList<String>();
          String sql_select;
          sql_select="SELECT *  FROM retiros;"; 
             try{
                //Connection conn= fachadabd.conectar();
                Statement sentencia = conn2.createStatement();
                ResultSet tabla = sentencia.executeQuery(sql_select);

                String resultado="";
                while(tabla.next()){
                    resultado="";
                    
                    int idAfiliado = getIdAfiliado(tabla.getString("ID_usuario"));
                    int idDemografia= conseguirDemografia(tabla.getString("ID_usuario"));
                    Date fechaRetiro=tabla.getDate("Fecha_Retiro");
                    int idFechaRetiro = getIdFecha(fechaRetiro);
                    String epsNueva="";
                    String motivoRetiro="";
                    if(tabla.getString("Cambio_A_EPS").equals("") ||  tabla.getString("Cambio_A_EPS").equals(" ")){
                        epsNueva="N/A";
                        motivoRetiro="PAGO NO OPORTUNO";
                    }else{
                        epsNueva=tabla.getString("Cambio_A_EPS");
                        motivoRetiro="CAMBIO DE EPS";
                    }
                   
                    resultado+= "'"+idFechaRetiro+"', '"+idAfiliado+"', '"+idDemografia+"', '"+epsNueva+"', '"+motivoRetiro+"'";
                   // System.out.println("Tiempo Espera:" + tiempoEspera);
 
                     
                   // System.out.println(resultado);
                     retiros.add(resultado);
                }
                //conn.close();
                return  retiros;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return null; 
    }
    
    
    public ArrayList<String> getAfiliacion(){
        
          ArrayList<String>  retiros = new ArrayList<String>();
          String sql_select;
          sql_select="SELECT *  FROM retiros;"; 
             try{
                //Connection conn= fachadabd.conectar();
                Statement sentencia = conn2.createStatement();
                ResultSet tabla = sentencia.executeQuery(sql_select);

                String resultado="";
                while(tabla.next()){
                    resultado="";
                    
                    int idAfiliado = getIdAfiliado(tabla.getString("ID_usuario"));
                    int idDemografia= conseguirDemografia(tabla.getString("ID_usuario"));
                    Date fechaRetiro=tabla.getDate("Fecha_Retiro");
                    int idFechaRetiro = getIdFecha(fechaRetiro);
                    String epsNueva="";
                    String motivoRetiro="";
                    if(tabla.getString("Cambio_A_EPS").equals("") ||  tabla.getString("Cambio_A_EPS").equals(" ")){
                        epsNueva="N/A";
                        motivoRetiro="PAGO NO OPORTUNO";
                    }else{
                        epsNueva=tabla.getString("Cambio_A_EPS");
                        motivoRetiro="CAMBIO DE EPS";
                    }
                   
                    resultado+= "'"+idFechaRetiro+"', '"+idAfiliado+"', '"+idDemografia+"', '"+epsNueva+"', '"+motivoRetiro+"'";
                   // System.out.println("Tiempo Espera:" + tiempoEspera);
 
                     
                   // System.out.println(resultado);
                     retiros.add(resultado);
                }
                //conn.close();
                return  retiros;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return null; 
    }
    
    
    
        
    public ArrayList<String> getPagos(){
        
          ArrayList<String>  pagos = new ArrayList<>();
          String sql_select;
          sql_select="SELECT *  FROM pagos;"; 
             try{
                //Connection conn= fachadabd.conectar();
                Statement sentencia = conn2.createStatement();
                ResultSet tabla = sentencia.executeQuery(sql_select);
                

                String resultado="";
                while(tabla.next()){
                    resultado="";
                    
                    int idAfiliado = getIdAfiliado(tabla.getString("ID_usuario"));
                    int idDemografia= conseguirDemografia(tabla.getString("ID_usuario"));
                    Date fechaPago = tabla.getDate("Fecha_Pago");
                    int idFechaPago = getIdFecha(fechaPago);
                    //int idGrupo = getGrupoFamiliar(idAfiliado);
                    int valorPagado = tabla.getInt("Valor_pagado");
                    resultado+= "'"+idAfiliado+"', '"+idFechaPago+"', '"+idDemografia+"', '"+valorPagado+"'";

                    //System.out.println(resultado);
                     pagos.add(resultado);
                }
                //conn.close();
                return  pagos;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return pagos; 
    }
    
    public ArrayList<String> getFormulacionMedica(){
                  ArrayList<String>  formulacionMedicas = new ArrayList<String>();
          String sql_select;
          sql_select="SELECT *  FROM formulas_medicas;"; 
             try{
                //Connection conn= fachadabd.conectar();
                Statement sentencia = conn2.createStatement();
                ResultSet tabla = sentencia.executeQuery(sql_select);

                String resultado="";
                while(tabla.next()){
                    resultado="";
                    String codigoFormula= tabla.getString("Codigo_Formula");
                    int idMedico = getIdMedico(tabla.getString("ID_Medico"));
                    String [] codigoMedicamentos= tabla.getString("Medicamentos_Recetados").split(";");
                    Date fecha = tabla.getDate("Fecha");
                    int idFecha = getIdFecha(fecha);
                    int idUsuario= getIdAfiliado(tabla.getString("ID_Usuario"));
                    int idDemografia = conseguirDemografia(tabla.getString("ID_Usuario"));
                    
                    for(int i=0;i<codigoMedicamentos.length;i++){
                        resultado="";
                        resultado+= " '"+idFecha+"', '"+getIdMedicamento(codigoMedicamentos[i])+"' ,'"+codigoFormula+"', '"+idUsuario+"', '"+idDemografia+"',"
                                + " '"+idMedico+"', '"+getPrecioMedicamento(codigoMedicamentos[i])+"'";
                      //  System.out.println(resultado);
                        formulacionMedicas.add(resultado);
                    }

                }
                //conn.close();
                return  formulacionMedicas;
        }
        catch(SQLException e){ System.out.println(e); }
        catch(Exception e){ System.out.println(e); }
        return null;
    }
    
    public String [] getDemoCotizanteEspecifico(String Id_cotizante){
        String [] resultado = new String[6];
        String sql_select;
        sql_select = "SELECT sexo, estado_civil, nivel_escolaridad,direccion,"
                + " estracto, salario_base FROM cotizante WHERE cedula='"+Id_cotizante+"';";
        try {
           // Connection conn = fachadabd.conectar();
            Statement sentencia = conn2.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);

            
            while (tabla.next()) {
                resultado[0]=tabla.getString("sexo");
                resultado[1]= tabla.getString("estado_civil");
                resultado[2]=tabla.getString("nivel_escolaridad");
                resultado[3]=tabla.getString("direccion");
                resultado[4]=tabla.getString("estracto");
                resultado[5]=""+tabla.getInt("salario_base");
                
                
            }
            //conn.close();
            return resultado;
        } catch (SQLException e) {
            System.out.println(e);
        } catch (Exception e) {
            System.out.println(e);
        }
        return null;
    }
    
    public String [] getDemoBeneficiarioEspecifico(String idBeneficiario){
        String [] resultado = new String[6];
        String sql_select;
        sql_select = "SELECT a1.Sexo, a1.Estado_Civil, c.Estracto, c.Direccion,c.Salario_Base FROM\n"
                + "	(SELECT cb.Cotizante, b.Sexo, b.Estado_Civil\n"
                + " FROM (cotizante_beneficiario cb JOIN beneficiario b  on cb.beneficiario= b.ID_Beneficiario AND b.ID_Beneficiario='"+idBeneficiario+"'))"+ 
                "a1 JOIN cotizante c On a1.Cotizante=c.Cedula;";
        try {
            //Connection conn = fachadabd.conectar();
            Statement sentencia = conn2.createStatement();
            ResultSet tabla = sentencia.executeQuery(sql_select);

            
            while (tabla.next()) {
                resultado[0]=tabla.getString("sexo");
                resultado[1]= tabla.getString("estado_civil");
                resultado[2]="NO APLICA";
                resultado[3]=tabla.getString("direccion");
                resultado[4]=tabla.getString("estracto");
                resultado[5]=""+tabla.getInt("salario_base");
                
                
            }
            //conn.close();
            return resultado;
        } catch (SQLException e) {
            System.out.println(e);
        } catch (Exception e) {
            System.out.println(e);
        }
        return null;
    }
    
    public int conseguirDemografia(String idAfiliado){
        String tipo=getTipoAfiliado(idAfiliado);
        int idDemografia=0;
        if (tipo.equals("COTIZANTE")){
            String [] demoCotizante= getDemoCotizanteEspecifico(idAfiliado);
            idDemografia=getIdDemografia(demoCotizante);
        }else if (tipo.equals("BENEFICIARIO")){
            String [] demoBeneficiario=getDemoBeneficiarioEspecifico(idAfiliado);
            idDemografia=getIdDemografia(demoBeneficiario);
        }
        return idDemografia;
        
    }   
    
    public int getIdDemografia(String [] demo){
        int idDemografia=0; 
        String sql_select;
        sql_select="SELECT id_demografia FROM dimension_demografica WHERE sexo= '"+demo[0]+"' AND " + 
                "estado_civil= '"+demo[1]+"' AND nivel_escolaridad = '"+demo[2]+"' AND direccion = '"+demo[3]+"' AND estrato = '"+demo[4]+"'" + 
                "AND salario_base= '"+demo[5]+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                idDemografia=tabla.getInt("id_demografia");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return idDemografia;
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
        
    public String getTipoAfiliado(String idAfiliado){
        String tipoAfiliado=""; 
        String sql_select;
        sql_select="SELECT tipo_afiliacion FROM dimension_afiliado WHERE identificacion= '"+idAfiliado+"'";
         try{
            //Connection conn= fachadadw.conectar();
            Statement sentencia = conn.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                tipoAfiliado=tabla.getString("tipo_afiliacion");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return tipoAfiliado;
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return null;
    }
   
    public static int calcularTiempoEspera(Date sqlfechaInicial, Date sqlfechaFinal) {
        
            java.util.Date fechaInicial = new java.util.Date(sqlfechaInicial.getTime());
            java.util.Date fechaFinal = new java.util.Date(sqlfechaFinal.getTime());
            DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM);
            String fechaInicioString = df.format(fechaInicial);
            try {
                fechaInicial = df.parse(fechaInicioString);
            }
            catch (ParseException ex) {
            }

            String fechaFinalString = df.format(fechaFinal);
            try {
            fechaFinal = df.parse(fechaFinalString);
            }
            catch (ParseException ex) {
            }

            long fechaInicialMs = fechaInicial.getTime();
            long fechaFinalMs = fechaFinal.getTime();
            long diferencia = fechaFinalMs - fechaInicialMs;
            double dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
            return ( (int) dias);
    }
    
    public int getCostoServicio(String codigoServicio){
         int costoServicio=0;  
        String sql_select;
        sql_select="SELECT Costo FROM servicios_pos WHERE ID_Servicio_POS= '"+codigoServicio+"'";
         try{
            //Connection conn= fachadabd.conectar();
            Statement sentencia = conn2.createStatement(); 
            ResultSet tabla = sentencia.executeQuery(sql_select);

            while(tabla.next()){
                costoServicio=tabla.getInt("Costo");

               //estudiante.setPrograma(tabla.getString("programa"));
            }
            //conn.close();
            return costoServicio;                    
         }
         catch(SQLException e){ System.out.println(e); }
         catch(Exception e){ System.out.println(e); }
         return -1;
    }
    
    public  void closeConnections() throws SQLException{
        conn.close();
        conn2.close();
    }
    
    
    
//    public static void main (String [] args){
//       DaoHechos dao = new DaoHechos();
//       ArrayList in = dao.getPagos();
//       
//
//       System.out.println(in);
//       
//       
//        try {
//            dao.closeConnections();
//        } catch (SQLException ex) {
//            Logger.getLogger(DaoHechos.class.getName()).log(Level.SEVERE, null, ex);
//        }
//        
//    }
    
    
   
    
   
    
    
}
